/**
 * @file main.js
 * @description Vue应用程序的入口文件，负责应用的初始化和全局配置
 */

// 导入Vue核心功能
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from "./router";

// 导入Element Plus相关依赖
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ELIcons from '@element-plus/icons-vue'

// 导入自定义的axios配置
import axios from "./utils/request";

/**
 * 初始化应用的函数
 * @param {Object} app - Vue应用实例
 * @description 配置应用的核心功能，包括状态管理和路由
 */
function initApp(app) {
  // 使用Pinia进行状态管理
  app.use(createPinia())
  // 配置路由
  app.use(router)
}

// 创建Vue应用实例
const app = createApp(App)

// 配置全局属性
app.config.globalProperties.$axios = axios; // 将axios注册为全局属性

// 注册Element Plus图标组件
for (let iconName in ELIcons) {
  app.component(iconName, ELIcons[iconName]);
}

// 使用Element Plus组件库
app.use(ElementPlus);

// 初始化应用配置
initApp(app)

// 将应用挂载到DOM
app.mount('#app')
